From 2407671d89b44df4aa7d976b6cb2ff99016ce202 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Thu, 14 Jul 2011 13:22:35 +0100 Subject: [PATCH] build: define "move-if-changed" make macro. Use it to replace various places which (should) use the if ! cmp -s ...; then mv ....; fi pattern. Also add an else clause to cleanup the unchanged temporary file. Signed-off-by: Ian Campbell Committed-by: Ian Jackson --- Config.mk | 12 +++++++++++- tools/libxl/Makefile | 7 ++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Config.mk b/Config.mk index da27c26aaf..29d72c720e 100644 --- a/Config.mk +++ b/Config.mk @@ -118,6 +118,16 @@ define buildmakevars2shellvars export XEN_ROOT="$(XEN_ROOT)" endef +# +# Compare $(1) and $(2) and replace $(2) with $(1) if they differ +# +# Typically $(1) is a newly generated file and $(2) is the target file +# being regenerated. This prevents changing the timestamp of $(2) only +# due to being auto regenereated with the same contents. +define move-if-changed + if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi +endef + buildmakevars2file = $(eval $(call buildmakevars2file-closure,$(1))) define buildmakevars2file-closure .PHONY: genpath @@ -134,7 +144,7 @@ define buildmakevars2file-closure echo "XEN_SCRIPT_DIR=\"$(XEN_SCRIPT_DIR)\"" >> $(1).tmp; \ echo "XEN_LOCK_DIR=\"$(XEN_LOCK_DIR)\"" >> $(1).tmp; \ echo "XEN_RUN_DIR=\"$(XEN_RUN_DIR)\"" >> $(1).tmp; \ - if ! cmp $(1).tmp $(1); then mv -f $(1).tmp $(1); fi + $(call move-if-changed,$(1).tmp,$(1)) endef ifeq ($(debug),y) diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile index 0c9162f919..78434fe804 100644 --- a/tools/libxl/Makefile +++ b/tools/libxl/Makefile @@ -75,7 +75,8 @@ $(eval $(genpath-target)) _libxl_paths.h: genpath sed -e "s/\([^=]*\)=\(.*\)/#define \1 \2/g" $@.tmp >$@.2.tmp - if ! cmp -s $@.2.tmp $@; then mv -f $@.2.tmp $@; fi + rm -f $@.tmp + $(call move-if-changed,$@.2.tmp,$@) libxl_paths.c: _libxl_paths.h @@ -85,8 +86,8 @@ $(LIBXL_OBJS) $(LIBXLU_OBJS) $(XL_OBJS): libxl.h _libxl_%.h _libxl_%.c: libxl.idl gen%.py libxl%.py $(PYTHON) gen$*.py libxl.idl __libxl_$*.h __libxl_$*.c - mv __libxl_$*.h _libxl_$*.h - mv __libxl_$*.c _libxl_$*.c + $(call move-if-changed,__libxl_$*.h,_libxl_$*.h) + $(call move-if-changed,__libxl_$*.c,_libxl_$*.c) libxenlight.so: libxenlight.so.$(MAJOR) ln -sf $< $@ -- 2.30.2